/*
 * FileThread.java
 *
 * Created on 15 de junio de 2007, 08:57 AM
 *
 * To change this template, choose Tools | Options and locate the template under
 * the Source Creation and Management node. Right-click the template and choose
 * Open. You can then make changes to the template in the Source Editor.
 */

package com.src.computec.radar.distribucion.thread;

import com.src.computec.radar.distribucion.base.constantes.ConstantesGenerales;
import com.src.computec.radar.distribucion.reasignacion.dto.DetailDto;
import com.src.computec.radar.distribucion.reasignacion.dto.ReasignacionDistribucionDto;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

/**
 *
 * @author aocampo
 */
public class FileThread implements Runnable {
    
    public static final int FILE_INCONSISTENCIAS = 1;
    private int i;
    private String fileName;
    private List listObjects;
    
    /** Creates a new instance of FileThread */
    public FileThread(int i, String fileName, List listObjects) {
        this.i = i;
        this.fileName = fileName;
        this.listObjects = listObjects;
    }
    
    public void run() {
        switch (i) {
            case FILE_INCONSISTENCIAS: {
                this.createNewFileInconsistencias();
                break;
            }
        }
    }
    
    private void createNewFileInconsistencias() {
        if (listObjects != null && !listObjects.isEmpty()) {
            File file = null;
            FileWriter fileWriter = null;
            try {
                file = new File(ConstantesGenerales.FOLDER_CARGUE_ARCHIVOS + ConstantesGenerales.PATH_ARCHIVOS_ALERTAS + fileName);
                fileWriter = new FileWriter(file);
                fileWriter.write("NOMBRE_RESPONSABLE" + ConstantesGenerales.FILE_SEPARATOR + "FECHA_REASIGNACION" + ConstantesGenerales.FILE_SEPARATOR + "NUMERO_ORDEN" + ConstantesGenerales.FILE_SEPARATOR +
                                 "FECHA_PROCESO" + ConstantesGenerales.FILE_SEPARATOR + "EMP. MENSAJERIA - NODO (INICIAL)" + ConstantesGenerales.FILE_SEPARATOR + "EMP. MENSAJERIA - NODO (FINAL)" + ConstantesGenerales.FILE_SEPARATOR + 
                                 "CODIGOS_BARRAS" + ConstantesGenerales.FILE_SEPARATOR + "MENSAJE\n");
                Iterator iterator1 = listObjects.iterator();
                while (iterator1.hasNext()) {
                    ReasignacionDistribucionDto reasignacionDistribucionDto = (ReasignacionDistribucionDto) iterator1.next();
                    fileWriter.write(reasignacionDistribucionDto.getNombreResponsable() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(ConstantesGenerales.SIMPLE_DATE_FORMAT.format(reasignacionDistribucionDto.getFechaReasignacion()) + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(reasignacionDistribucionDto.getNumeroOrden() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(ConstantesGenerales.SHORT_SIMPLE_DATE_FORMAT_TO_HELP.format(reasignacionDistribucionDto.getFechaProceso()) + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(reasignacionDistribucionDto.getRazonSocialProveedorInicial() + " - " + reasignacionDistribucionDto.getNombreNodoInicial() + ConstantesGenerales.FILE_SEPARATOR);
                    fileWriter.write(reasignacionDistribucionDto.getRazonSocialProveedorFinal() + " - " + reasignacionDistribucionDto.getNombreNodoFinal() + ConstantesGenerales.FILE_SEPARATOR);
                    int indice = 1;
                    Iterator iterator2 = reasignacionDistribucionDto.getListCodigosBarra().iterator();
                    while (iterator2.hasNext()) {
                        DetailDto detailDto = (DetailDto) iterator2.next();
                        if (indice++ > 1) {
                            fileWriter.write(ConstantesGenerales.FILE_SEPARATOR_TO_HELP + detailDto.getCodigoBarras());
                        }
                        else {
                            fileWriter.write(detailDto.getCodigoBarras());
                        }
                    }
                    fileWriter.write(ConstantesGenerales.FILE_SEPARATOR + reasignacionDistribucionDto.getMessage() + "\n");
                }
                fileWriter.write("\nNRO. REGISTROS: " + listObjects.size() + "\n");
                fileWriter.write("FECHA GENERACION: " + ConstantesGenerales.SIMPLE_DATE_FORMAT.format(new Date()));
            }
            catch (IOException e) {
                e.printStackTrace();
                System.out.println("FileThread:createNewFileCodigosBarrasOrdenesProceso: " + e);
            }
            finally {
                try {
                    if (fileWriter != null) {
                        fileWriter.close();
                    }
                }
                catch (IOException e) {
                    e.printStackTrace();
                    System.out.println("FileThread:createNewFileInconsistencias:fileWriterClose: " + e);
                }
            }
        }
    }
}